Visual Basic 5.0 Tips & Trucks
Auteur: Bert Hendrick

Men heeft mij gevraagd om de cursus inleiding tot programmeren te updaten
naar de versie Visual Basic 5.0. Echter ik ben geen schrijver en geen
professionele programmeur, daardoor vind ik het niet redelijk om aan u dingen
te vertellen die ik zelf nog niet eens begrijp, wat ik doe is pure hobby en
wordt door mij grotendeels zelf ontdekt door het zelf uit te proberen of door
professionals te raadplegen. Dit neemt niet weg dat ik u  toch wil laten
zien hoe ik dergelijkke problemen ontdek en aanpak in mijn Visual Basic 5.0
Inkoop programma.

Probleem 1:
In Nieuwsbrief 4de jaargang oktober 1997; nummer 2 en 3 liet ik u een
voorbeeld zien om bestanden te zoeken op een harde schijf. Dit zelfde gaan
we nu weer doen echter op alle beschikbare schijven en  met behulp van de
MsOffice 8.0 Object Library (MSO97.dll).

- Start een nieuw project op, ga naar Project, References, zoek de SO97.dll
  en activeer deze.
- Plaats op het Form een ListBox, TextBox, DriveListBox (Visible=False) en
  een CommandButton.
- Plaats onderstaande code in de CommandButton.

Private Sub Command1_Click()
  'In References is de Microsoft Office 8.0 Object Library opgenomen
  If Text1.Text <> "" Then
    List1.Clear
    For Start = 1 To Drive1.ListCount 	' we hoeven niet de A-Drive,dit
    					' gebeurd automatisch
       Set xl = CreateObject("word.document")
       With xl.Application.FileSearch
         .NewSearch
         .LookIn = Left(Drive1.List(Start), 2) & "\" 	' we hoeven alleen
                                                        ' de Drive letter
         .SearchSubFolders = True
         .filename = Trim(Text1.Text)
         .MatchAllWordForms = True
         .FileType = msoFileTypeAllFiles
          If .Execute() > 0 Then
            For i = 1 To .FoundFiles.Count
               List1.AddItem .FoundFiles(i)
            Next i
          Else
            MsgBox "Er is geen bestand gevonden. !!"
          End If
       End With
    Next Start
  Else
     MsgBox "U dient wel iets in te voeren waarnaar gezocht moet worden. !!"
     Text1.setfocus
  End If
End Sub

Korte Uitleg:
- Er wordt zogenaamd een document aangemaakt. Dan wordt de Class module
  FileSearch aangeroepen. Deze roept vervolgens de overige Subs en
  Properties aan om uiteindelijk bij If.Execute() deze files af te geven in
  de ListBox.
- Het resultaat kunt u verder gebruiken binnen uw eigen applicatie Visual
  Basic 5.0 Tips &   Trucks
Auteur: Bert Hendrick

In QuickBasic 4.5 kon ik Librarys aanmaken waarin ik onderdelen programmeerde
die ik dikwijls nodig had binnen het zelfde project of in andere projecten,
zodoende hoefde ik de code slechts een maal te schrijven. In Visual Basic 4.0
en 5.0 heb ik  deze aanpak nooit goed begrepen, maar door oefenen en te
willen steeds opnieuw pproberen  wordt men wijs. Deze aanpak heeft mij een
nieuwe wereld binnen het programmeren doen ontdekken.

Probleem 2:
We willen de Text kunnen overschrijven en de BTW berekenen van een ingevoerde
text.
- Start een nieuw project op en ga naar Project Properties.
- Vul in bij Project Type : ActiveX Dll.
- Vul in bij Project Name : HCCBasicGG.
- Vul in bij Project Discription : HCC Basic GG 1998.
- Vul in bij Startup Object : Sub Main.
- Voeg een Module toe en geef die de naam ModHccBasicGG en voeg
  onderstaande code in.

Public Sub Main()
  ' Hier hoeft niets in te staan
End Sub

- Voeg een Class Module toe en geef die de naam ClsHccBasicGG,
  Instancing = Multiuse en voeg onderstaande code in.

Option Explicit
' De property Get variabelen moeten Public zijn omdat ze
' vanuit iedere externe applicatie oproepbaar moeten zijn.

Public Property Get OutputBedrag(InputBedragExcl As Currency, _
                                 InputBtwPerc As Integer) As Currency)
  OutputBedrag = InputBedragExcl * (InputBtwPerc / 100)
End Property

Public Property Get OutputBedragIncl(InputBedragExcl As Currency, _
                                     InputBtwPerc As Integer) As Currency)
  OutputBedragIncl = InputBedragExcl * (InputBtwPerc / 100)
  OutputBedragIncl = OutputBedragIncl + InputBedragExcl
End Property

Public Property Get OutputOverTypeTekst(InpputOverTypeSelLength As Integer, _
                                        ByVal KeyAscii As Integer)
  ' Geeft de mogelijkheid om tekst over te typen in een TextBox
  If InputOverTypeSelLength = 0 And KeyAscii >= 32 Then
    OutputOverTypeTekst = 1
  End If
End Property

- Start dit project With Full Compile.
- Als er geen meldingen komen laat u dit project rustig lopen ( dus niet
  afsluiten).
- Start Visual Basic opnieuw op, en ga naar Project, References, zoek
  HCC Basic GG 1998 en activeer deze.
- Plaats op het Form een TextBox, twee Labels, twee OptionButtons,
  CommandButton en voeg onderstaande code in.

Option Explicit
Public HCCBasLib As New ClsHccBasicGG
Private BtwPerc As Integer

Private Sub Command1_Click()
  If Option1(0).Value = True Then ' Options hebben de zelfde naam
                                  ' met Index 0 en Index 1
    BtwPerc = 6
  Else
    BtwPerc = 17.5
  End If
  Label1.Caption = "Fl. " & HCCBasLib.OutputBedrag(CCur(Text1.Text), BtwPerc)
  Label2.Caption = "Fl. " & HCCBasLib.OutputBedragIncl(CCur(Text1.Text), BtwPerc)
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = 46 Then KeyAscii = 44
  Select Case KeyAscii
    Case 13
      KeyAscii = 0
      SendKeys "{TAB}"
    Case 8, 127, 44, 45, 46
    Case 48 To 57
    Case Else
    KeyAscii = 0
  End Select
  Text1.SelLength = HCCBasLib.OutputOverTypeTekst(Text1.SelLength, KeyAscii)
End Sub

Korte Uitleg:
- Er worden alleen getallen geaccepteerd met een nederlandse komma, heeft u
  een andere taalinstelling dient u If KeyAscii = 46 aan te passen.
- Text1.Text wordt automatisch geconverteerd naar een Currencygetal
  Ccur(Text1.Text).
- U heeft kunnen zien dat ik de Library Variabelen Input en Output meegeef.
  Dit is om duidelijk aan te geven dat het hier gaat om gegevens (Input)
  van een Externe Applicatie en gegevens (Output) naar een Externe
  applicatie gaat.

Start dit project ook op. Als u geen verdere meldingen krijgt kunt u
getallen invoeren en berekenen. Als u klaar bent kunt u beide projecten
stoppen en de HCCBasicGG compileren tot een Library. Visual Basic en Windows
doen de rest en hierbij is de HCCBasicGG Library geboren.

Gooi deze projecten niet weg maar bewaar  ze voor de volgende Nieuwsbrief,
ik zal proberen iedere keer een procedure te schrijven die in de HCCBasicGG
Library toegepast kan worden.

Heeft u ook een procedure die gebruikt kan worden in de HCCBasicGG Library,
laat ons dat even weten of stuur hem op.

Groetjes.
----------------------------------------------------
Visual Basic 5.0 Tips & Trucks-CD.

In deze nieuwsbrief treft u Van Microsoft BV twee soorten Cd's aan die een
schat aan informatie bevatten.

Systeem vereiste:
- Een Windows95 of hoger systeem.
- En natuurlijk een Cd-Rom speler.
- Cd 1 bevat Visual Basic Owners's Area ( een cd vol Tips & Trucks en
  Voorbeelden).
- Cd 2 bevat Trial Versions van Visual Basic, C++, J++, Foxpro, Interdev,
  SourceSafe, Office Developer, Mastering series, MSDN, SQL server, Internet
  Explorer en CE toolkits (let wel op, het betreft hier probeerprogramma's,
  dus geen volledig werkende applicaties).

Met dank aan Microsoft BV, met name Jos Stassen.

Veel plezier ermee.

Bert Hendrick.
